/*
 * @Author: BanHua
 * @Date: 2021-01-15 13:38:55
 * @LastEditors: BanHua
 * @LastEditTime: 2021-01-23 00:54:26
 * @Description: file content
 */
//开始脚本
let storage = storages.create('kugou10_14');
let 操作次数 = storage.get('viewDataArr')['bh_czcs'] || 30
let 星币数量 = storage.get('viewDataArr')['bh_xbsl'] || 50

let 私聊话术 = storage.get('viewDataArr')['bh_slhs'] || "";
let 私聊 = storage.get('viewDataArr')['bh_siliao'] || false;
let 关注 = storage.get('viewDataArr')['bh_guanzhzu'] || false;
let 已私聊次数 = 0
let 已查看用户 = 0
console.show();

let xb = false;
/////////////////////////////////////
/**
 * 测试一下
 * 
 * 
 * test
 * 
 */

this.下滑 = function () {
    var x1 = random(device.width/4,(device.width/4)*3);
    var y1 = random((device.height/4)*3.5,(device.height/4)*3.75);
    var x2 = random(device.width/4,(device.width/4)*3);
    var y2 = random((device.height/4)*0.25,(device.height/4)*0.5);
    swipe(x1, y1, x2, y2, random(500, 1000));
}

function 不可私聊 () {
    if(text("对方设置了仅Ta关注的人可以私聊").exists() 
    || text("对方设置了仅主播可以私聊").exists()){
        return true
    } else {
        return false
    }
}

//访问用户主页函数,默认操作10个用户
this.v_visitUserHomepage = function (n_operNum) {

    let user_name_arr = storage.get("user_name_arr") || []
    let 跳过次数 = 1
    loop:
    while (1) {
        
        log('开始查找列表')
        let list = id("d5n").find()
        list = list[list.length-1]
        log('开始遍历')
        try {
            list.children().forEach((v, i) => {

                if (已私聊次数 >= 操作次数) {
                    log("私聊任务完成！")
                    exit();
                }

                // className("android.widget.RelativeLayout")
                if (v) {
                    if (v.className() == "android.widget.RelativeLayout") {
                        let user_name = v.findOne(id("ehm"))
                        if (user_name) {
    
                            //判断币够不够
                            let bi = v.findOne(id("eg2")).text().split('星')[0]
                            log("【%s】星币", bi)
                            if (Number(bi) < 星币数量) {
                                // exit();
                                xb = true
                                throw "星币不够"
                            }
    
                            if (user_name.text().indexOf("匿名") > -1) {
                                log("第%d个用户是匿名用户", i+1)
                            } else {
                                if ( user_name_arr.indexOf(user_name.text()) > -1 ) {
                                    log("【%s用户重复了】", user_name.text())
                                    
                                } else {
                                    //存储用户名
                                    已查看用户++
                                    user_name_arr.push(user_name.text())
                                    storage.put("user_name_arr", user_name_arr)
                                    let temp = 0
                                    do {
                                        log("点击该用户")
                                        v.click()
                                        temp++
                                        sleep(random(800, 1000))
                                        if (temp > 3) {
                                            log('该用户为神秘用户 ')
                                            break
                                        }
                                    } while(!id("hm1").findOnce());

                                    if (temp > 3) {

                                    } else {
                                        do {
                                            log("点击私信")
                                            id("hm1").findOne().click()
                                            sleep(random(500, 1000))
                                        } while (!id("b3x").findOnce());
                                        sleep(random(1000, 2000))
                                        //读取话术并输入
                                        try {
                                            私聊话术.split(";").forEach((t, i) => {
                                                // id("b3x").findOne().setText(t)
                                                let edit_view = id("b3x").findOne(10 * 1000)
                                                // 这里可能需要延迟一下
                                                // sleep()
                                                if (!edit_view) {
                                                    log('没有找到输入框')
                                                    throw new Error("没有找到输入框")
                                                }

                                                log('开始输入')
                                                if (edit_view.setText(t)) {
                                                    log('输入成功')
                                                    sleep(random(600, 1100))
                                                    if (id("b46").findOne().click()) {
                                                        log('发送成功')
                                                    } else {
                                                        log('发送失败')
                                                        throw new Error("发送失败")
                                                    }

                                                    if (i == 0) {

                                                        for(;;) {
                                                        
                                                            // 此时判断弹窗
                                                            if (不可私聊()) {
                                                                log('不可私聊 强行跳出')
                                                                throw new Error("My Error")
                                                            }
                                                            
                                                            
                                                            if (text("立即赠送").exists()) {
                                                                log('立即赠送')
                                                                if (text('立即赠送').findOne().click()){
                                                                    log('赠送成功')
                                                                    break
                                                                } else {
                                                                    log('赠送失败')
                                                                }
                                                            }

                                                                                                                        
                                                            if (text("领取并赠送").exists()) {
                                                                log('领取并赠送')
                                                                if (text('领取并赠送').findOne().click()){
                                                                    log('领取并赠送 成功')
                                                                    break
                                                                } else {
                                                                    log('领取并赠送 失败')
                                                                }
                                                            }
                                                
                                                            if (text("10星币").exists()) {
                                                                log('10星币')
                                                                if (text('10星币').findOne().click()){
                                                                    log('10星币 成功')
                                                                    sleep(500)
                                                                    // 找立即赠送，如果找不到就跳出
                                                                    if (!text("领取并赠送").exists()) {
                                                                        break
                                                                    }
                                                                } else {
                                                                    log('10星币 失败')
                                                                }
                                                            }
                                                            sleep(999)

                                                            if (id("b46").exists()) {
                                                                id("b46").findOne().click()
                                                            }
                                                        }
                                                    }
                                                } else {
                                                    log('输入失败')
                                                }
                                                sleep(random(500, 1000))
                                            })
            
                                            已私聊次数++
                                        } catch(e) {
                                            log('手动报错')
                                        }

                    
                                        //开始返回
                                        do {
                                            log('返回')
                                            id("eal").findOne().click()
                                            sleep(random(500, 1000))
                                        } while(!id("hm1").findOnce());
                    
                                        //返回到列表
                                        do {
                                            back()
                                            sleep(random(1000, 2000))
                                        } while (!id("d2x").exists());
                                    }
                                }
                            }
                        }
                    }
                }
            })
        } catch (err) {
            console.error(err)
        }
    
        if (xb) {
            break
        }

        log('开始下滑列表')
        if (list.scrollForward()) {
            log('下滑成功')
        } else {
            log('下滑失败')
            下滑()
            if (已查看用户 % 30 == 0 || 已查看用户>=29) {
                log('该直播间操作完毕')
                break
            }
            sleep(random(3000, 5000))
            // exit()
        }
        
    }

}

this.兼容线程 = () => {
    //兼容线程
    threads.start(function(){
        //酷狗直播兼容线程v1.1.3
        while (1) {
            // log('----')
            if (text('fx_icon_H5-close-w_68x68@3x_eca8c7').exists()) {
                log("活动弹窗");text('fx_icon_H5-close-w_68x68@3x_eca8c7').findOne().click();sleep(1000);
            } else if (text('+关注').exists()) {
                log("关注");sleep(5 * 1000);if (text('+关注').exists()) back();sleep(1000);
            } else if (text('开启宝箱').exists()) {
                log('开启宝箱！');back();sleep(1000);
            } else if (id('ajt').exists()) {
                log("一元活动");id('ajt').findOne().click();sleep(1000);
            } else if (text("重新加载").exists()) {
                log("重新加载");back();sleep(1000);
            } else if (text('该用户已被封禁').exists()) {
                log("该用户已被封禁");log("点击确定");click("确定");
            } else if (text("酷狗安全验证").exists() || text("酷狗音乐").exists()) {
                log("酷狗安全验证||酷狗音乐");log("返回");back();log("延迟一秒");sleep(1000);
            } else if (text("直播已结束").exists() || text("为你推荐").exists()) {
                log("直播已结束||为你推荐");log("返回");back();log("延迟一秒");sleep(1000);
            } else if (id("b4d").exists()) {
                log("二次元弹窗");log("点击关闭");id("b4d").findOne().click();log("延迟一秒");sleep(1000);
            } else if (text('我知道了').exists()) {
                log('我知道了');
                click('我知道了');
            } else if (text('允许').exists()) {
                log('允许');
                click('允许');

            } else if (id('dn8').exists()) {
                log('关闭一起玩')
                id('dn8').findOne().click();
                
            } 
        }
    });
}


(function(){
    //初始化局部变量
    loop1:
    while (1) {
        log("开始while【loop1】循环");
        兼容线程()
        //判断是否在直播界面
        // desc("退出直播间").waitFor()
        // id("ble").waitFor()

        // //点击更多
        // do {
        //     log('点击id【礼物】');
        //     id("ble").findOne().click()
        //     sleep(2000);
        // } while (id("ble").exists());

        // click('贡献榜')
        // sleep(random(500, 1000))
        // click('7天')
        // sleep(random(500, 1000))


        console.verbose("开始等待text【7天用户列表】出现！");
        // id("d5n").waitFor();
        sleep(1000)

        //进入主体循环
        v_visitUserHomepage(操作次数);
        break;
        //开始返回到主页
        // do {
        //     back()
        //     sleep(1000, 2000)
        // } while (!id("ble").exists());
        // log("开始while【loop1】循环");
        
        // log("开始下滑到下一个主播");下滑();log("延迟五秒钟");sleep(5*1000);
    }
})();